package com.ecommerce.dddmodules.ordercontext.model;

import java.util.List;
/**
 * @packageName: ordercontext.model（订单上下文.领域包）
 * @className: CustomerOrder(客户订单领域)
 * @description: 围绕此订单领域展开业务
 * @author: luds
 * @version: v1.0
 * @date: 2021-04/01
 */
public class CustomerOrder {
	/**
	 * 订单ID
	 */
	private int orderId;
	/**
	 * 付款方式
	 */
	private String paymentMethod;
	/**
	 * 地址
	 */
	private String address;
	/**
	 * 订单项目列表
	 */
	private List<OrderItem> orderItems;
	/**
	 * 默认构造器
	 */
	public CustomerOrder() { }

	/**
	 * 计算总价
	 * @return 返回总价
	 */
	public float calculateTotalPrice() {
		return orderItems.stream().map(OrderItem::getTotalPrice)
				.reduce(0F, Float::sum);
	}

	/**
	 * 获取订单ID
	 * @return 返回订单ID
	 */
	public int getOrderId() {
		return orderId;
	}

	/**
	 * 设置订单ID
	 * @param orderId 订单ID
	 */
	public void setOrderId(int orderId) {
		this.orderId = orderId;
	}

	/**
	 * 获取订单项目明细
	 * @return 订单项目明细
	 */
	public List<OrderItem> getOrderItems() {
		return orderItems;
	}

	/**
	 * 设置订单项目明细
	 * @param orderItems 订单项目明细
	 */
	public void setOrderItems(List<OrderItem> orderItems) {
		this.orderItems = orderItems;
	}

	/**
	 * 获取付款方式
	 * @return 返回付款方式
	 */
	public String getPaymentMethod() {
		return paymentMethod;
	}

	/**
	 * 设置付款方式
	 * @param paymentMethod 付款方式
	 */
	public void setPaymentMethod(String paymentMethod) {
		this.paymentMethod = paymentMethod;
	}

	/**
	 * 获取地址
	 * @return 返回地址
	 */
	public String getAddress() {
		return address;
	}

	/**
	 * 设置地址
	 * @param address 地址
	 */
	public void setAddress(String address) {
		this.address = address;
	}
}
